home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…rary 7 (Internal Edition) / Apple R&P Lib Internal v7.0.iso / 5-Fonts & Software / System Software 6.0.5 / 6.0.5 Technical Information < prev    next >
Text File  |  1990-09-14  |  24KB  |  257 lines

  1. Read Me • Details of bug fixes and new features in 6.0.5.
  2.  
  3. This Read Me document provides information about the bug fixes made in Macintosh System Software 6.0.5.  This document is intended for highly technical users, and the information is not needed to operate the Macintosh.
  4.  
  5. ••    indicates a new feature in 6.0.5.
  6. •    indicates a bug fix in 6.0.5.
  7.  
  8.  
  9. ADB Manager
  10.  
  11. •• The Apple Keyboard driver now implements _ADBReInit on all machines.  This fixes a bug which made international keyboards look like U.S. keyboards on Macintosh Portables when they were reset on wakeup.
  12. • Implemented the full functionality of the ADB Manager found in the Macintosh IIci ROMs on all Macintoshes equipped with ADB.  The interface to the ADB Manager has not changed since the System Software 6.0 release.
  13. • Forced the interrupt masking level to 7 on all machines.
  14. • Changed the Auto/SRQ polling to only poll devices that are in the device table.
  15. • Fixed _ADBOp Listen command on the Portable for commands larger than six bytes.  Previously, this command sent garbage in the seventh and eighth bytes if the data count was greater than six.
  16.  
  17.  
  18. Apple File Exchange
  19.  
  20. • Fixed a bug where it used to run off the end of the unit table looking for local drivers.  This bug caused crashes on 1 Mb Macintosh SE models with two disk drives.
  21.  
  22.  
  23. Control Panel
  24.  
  25. • The Portable’s Control Panel devices only show up on the Portable.
  26. • If a user attempts to run the Portable’s DA on other machines, the system displays a dialog box stating that the DA cannot be used and gracefully exits.
  27. • Fixed a bug in the RAM disk cdev sizing to display multicharacter “K” suffixes in RAM disk sizes.
  28. • Fixed bug in the Clock Manager to allow century-date format in auto wakeup date.
  29.  
  30.  
  31. Deferred Task Manager
  32.  
  33. • Implemented the full functionality of the Deferred Task Manager found in the Macintosh IIci and Portable ROMs on the Macintosh II, IIx, IIcx, and SE/30.  This implementation fixes one small bug.
  34.  
  35.  
  36. Dialog Manager
  37.  
  38. • Fixed a bug where the default sound routine in ROM (for dialog boxes and alerts) used to trash register A1 and D2.
  39. • Fixed _IsDialogEvent not to dreference a NIL window pointer.
  40.  
  41.  
  42. Disk First Aid
  43.  
  44. • Now allows longer text names and localization.
  45.  
  46.  
  47. Font Manager
  48.  
  49. • Fixed to display zero-width characters, which are common in international fonts and some musical fonts, on the Macintosh IIci.
  50.  
  51.  
  52. Format Package
  53.  
  54. • Fixed a bug where incoming AppleTalk packets could cause floppy disk formatting failures without reporting an error.  See the Sony Driver section.
  55.  
  56.  
  57. HD SC Setup
  58.  
  59. •• Added partitioning to support A/UX on larger hard disk models.
  60. • Changed the ID string for the Quantum P40 drive and fixed the flush cache routine to send only the header data.
  61. • Fixed to perform a real format on all drives.
  62. • Corrected the interleave on Macintosh IIci-class machines.
  63.  
  64.  
  65. Installer
  66.  
  67. •• Now handles more than five disks.
  68. • Fixed so multiple installs without a reboot properly allocates and releases memory.
  69. • Fixed a bug where stopping and restarting a script multiple times caused crashes.
  70.  
  71.  
  72. Key Caps
  73.  
  74. • Fixed bug using an unlocked dereferenced TextEdit handle.
  75.  
  76.  
  77. LaserWriter
  78.  
  79. •• With the Installer, if the target disk has LaserWriter 6.0, it upgrades to 6.0.1; otherwise, the Installer ensures the use of LaserWriter 5.2 if the user chooses to install the LaserWriter.
  80.  
  81.  
  82. Macintosh Portable
  83.  
  84. • Fixed a bug where the battery would run out in a few days instead of a few weeks if AppleTalk was open when the Portable was Shutdown (not just put to sleep).
  85.  
  86.  
  87. MacroMaker
  88.  
  89. • A recent change to terminate immediately at the end of a macro introduced a bug which caused macro playback from the player on a non-MultiFinder machine to fail when the macro included launch or quit operations.  In the case of these two operations being played from the player, the MacroMaker window must be brought to the front before things look right and before setting up the proper macro list.  This was not happening with certain applications.  Fixed so the end of a macro is treated like a mouse click next in the macro.
  90. • In some applications the menus got mixed up with MacroMaker not being the last menu in the list.  Those applications called _InsertMenu with a BeforeID of a non-existent menu.  The system handles this the same as a BeforeID of zero, but MacroMaker did not.  Fixed so MacroMaker handles this the same as the system.
  91. • Fixed a bug where when doing a compile or assembly under MPW 3.0, if one clicked on the active-application icon (in the upper-right corner of the menu bar) to switch applications and didn’t come back to MPW until the tool had finished, the MacroMaker icon in the menu bar would be trashed and clicking on it would cause a crash.
  92. • Fixed a bug that caused the system to hang when switch-launching during installation.
  93. • Fixed an incompatibility where MacroMaker would hang at the end of all macros with certain applications.
  94.  
  95.  
  96. Memory Manager
  97.  
  98. • Fixed _ReallocHandle and _RecoverHandle to deal with MultiFinder temporary memory.
  99.  
  100.  
  101. Monitors
  102.  
  103. • Added support for 32-Bit QuickDraw.
  104.  
  105.  
  106. MultiFinder
  107.  
  108. • Fixed process switching code to be invulnerable to interrupt-time VBL queue changes.  Previously it scanned the queue twice with interrupts enabled under the assumption that the queue would not change.
  109. • Fixed _Open patch to check the ioResult, rather than d0, on return from the call through, since this works correctly even if the call is asynchronous.  This patch tags the file with the current process ID so MultiFinder can close leftover files when the application exits.
  110. • Fixed scheduling algorithm to prevent an application from hogging the CPU by indefinitely masking out update events in calls to _WaitNextEvent, _GetNextEvent, and _EventAvail.  The application is switched out after several ticks.
  111. • Modified to maintain the low-memory variable MBarHeight per process (i.e., it is “switched”).  This changes means that applications that change this value only affect MBarHeight for their process.  In particular, if an application crashes with an altered MBarHeight value (such as zero, when hiding the menu bar), all remaining applications retain their proper MBarHeight values.
  112.  
  113.  
  114. Print Monitor
  115.  
  116. •• Print Monitor 1.3 replaces Print Monitor 1.2.
  117.  
  118.  
  119. QuickDraw and Palette Manager
  120.  
  121. •• The 32-Bit QuickDraw version number now is $120.  The color icon does not appear on Macintosh IIci-class machines.  These machines have 32-Bit QuickDraw in ROM, and System 6.0.5 contains patches to make it equivalent to 32-Bit QuickDraw version 1.2.  The disk-based version is not needed and is not loaded on Macintosh IIci-class machines.
  122. ••This version of 32-Bit QuickDraw does not load on systems prior to 6.0.5.  An alert appears if this version is placed on a 6.0.3 or 6.0.4 system.  Furthermore, if the original 32-Bit QuickDraw (version 1.0) is placed in a 6.0.5 System Folder, an alert is displayed at boot time.
  123. •• Fixed _InitGDevice to fully support screens with baseAddr addresses that change across mode switches.  _InitGDevice now ensures that the portlist is kept up to date.
  124. •• All of the Picture drawing and recording changes are now fully functional.  Font names are recorded in pictures and IDs are reinstantiated at _DrawPicture time.  The _OpenCPicture trap is present and functional.  Pictures created with _OpenCPicture at other than 72 dpi are scaled properly.
  125. •• 32-Bit Addressed Pixel Maps:  Defined new pmVersion (baseAddr32 = 4) for 32-bit pointer baseAddr addresses.  The baseAddr addresses of such pixel maps are treated as 32-bit addresses.  No stripping or address translation is performed on it for use in 32-bit mode.  Furthermore, version 1.0 of 32-Bit QuickDraw draws to or copies from GWorlds of ScreenBuffers which have not been explicitly locked with LockPixel.  (Such GWorlds must never be purgeable.)
  126. •• PixMap32Bit:  Added new function PixMap32Bit (selector 22).  This QuickDraw extensions call returns true if the supplied PixMap requires 32-bit addressing mode for accesses to its pixels.
  127. •• GWorlds in MultiFinder Temporary Memory:  Added useMFTempBit flag (=2) to NewGWorld as a new option to allocate pixels in MultiFinder temporary memory.  Added new selector NewTempScreenBuffer (=21) to allocate pixels in MultiFinder temporary memory.
  128. ••GetPixBaseAddr:  Updated GetPixBaseAddr to handle all pmVersions.  This is the universal call to make when the baseAddr of a pixMap is desired.  The address returned is only valid in 32-bit addressing mode.  This routine does the right address translation and stripping for all pixMaps including screen devices, unlocked GWorlds, and 32-bit addressed pixel maps.
  129. •• Offscreen QuickDraw Version:  Added OffscreenVersion (selector 20) to get the version number of the installed QuickDraw and QuickDraw extensions.
  130. •• Direct Pixel Patterns: 16- and 32-bit per pixel pixpats (patType=1) are now supported.  Additionally, a new patType (=3) is now supported which uses dithering whenever 16- or 32-bit per pixel pixpats are displayed on indexed devices.
  131. •• Direct 'cicn' resources:  16- and 32-bit per pixel 'cicn' resources are now supported.
  132. •• PICT and Data Interchange:  Font names are recorded in version 2 PICTs.  When these PICTs are played back, the fonts are mapped by name to the correct ID on the target system.  A new call, _OpenCPicture(CPictHdr) is added.  This call is identical to _OpenPicture, except it allows the application to provide additional information which is recorded in the header of the  PICT 2.
  133. • Fixed so QuickDraw no longer aborts when dithering and stretching 8-bit images to a 32-bit screen.
  134. • Fixed so drawing diagonal lines, arcs, or polygons into pixel maps wider than 4K rowBytes works.
  135. • Fixed a bug in the Slot Manager on Macintosh IIs with revision A ROMs and a single 32-bit addressed screen which should have resulted in a jump to ROM during boot, but ended in an address error instead.
  136. • Patched DisposeGDevice so that when disposing the LastTxGDevice, it resets it to the main device.
  137. • Fixed bug in the text device loop so that scaled fonts are measured correctly and the decision as to which GDevice to draw on is more accurate than previous versions.
  138. • Fixed bug in the picFrame calculation in _OpenCPicture, so the picframe is no longer empty.
  139. • Fixed bug in updating of scaled (zoomed in or out) images that are clipped off of the top.  In addition, fixed a bug which occurred when performing an indexed to indexed dither where the height of the destination was between half the height of the source and the full height of the source.
  140. • Fixed bug in _ScrollRect when the rectangle spans screens of differing depths and cluts.  _ScrollRect now includes the region coming from incompatible screens as part of the update region returned.
  141. • Fixed calculation of dither error for 16-bit per pixel sources when displayed on color devices.  A solid white 16-bit image would have appeared mottled and slightly off-white before this fix.
  142. • Fixed bug where 32- and 16-bit per pixel images (or PICTs with such) would not dither when drawn into old style GrafPorts offscreen or old style GrafPorts on one-bit screens.  Also improved the error calculation for dither to bitmap and grayscale devices.
  143. • Fixed bug in _Index2Color for 16-bit devices which would result in _SeedCFill and _CalcCMask not working on 16-bit pixel maps when the seed color was not white, black, or a fully saturated color.  Now _Index2Color replicates out the 5-bit components end-to-end three times and then adds the high bit to get 16-bit components for later comparisons.
  144. • Fixed PixMap32Bit to more accurately tell the state of screen devices’ pixel maps.  PixMap32Bit used to always return true whenever it was given a screen device’s pixel map since that is the safest answer and the baseAddr addresses are always 32-bit clean.  Now it only returns true if the device’s framebuffer absolutely requires 32-bit addressing.
  145. • Optimized the default _SeedCFill and _CalcCMask search routines to increase speed in 16- and 32-bits per pixel.
  146. • Fixed 32-Bit QuickDraw installation to dispose of the old crsr data structures instead of orphaning them in the system heap.
  147. • Fixed several long-standing bugs in the recording of old style (version 1) PICTs:
  148.     1) If a dithered image was copied with _CopyBits into an old picture, the image would have been thresholded to black and white and the ditherCopy mode ($40) would have been recorded in the picture.  If this picture was created by LaserWriter driver 5.2 (or 6.0 with the B/W option) the driver would have been confused by the illegal mode and would have inverted the image on the printer.  Now, if a dithered image is copied with _CopyBits into an old picture, the image is dithered to black and white and placed into the picture with Copy mode.  The printed version is not inverted.
  149.     2) Now when recording a PICT 2 color image into a PICT 1 (color images are illegal in a PICT 1), the color image is properly converted to black and white before being placed in the picture.
  150. • When recording a picture from a 32-bit addressed pixel map (any screen or offscreen), copying with _CopyBits now works properly, and recording a screen into a picture no often no longer requires an intermediate buffer if the image does not cross screen boundaries.
  151. • Fixed a bug in _MakeITable which would result in theZone being left set to the AppZone if it failed to allocate the necessary work space.
  152. • Fixed a bug in _OpenCPicture which would result in the new picture header information not being recognized.
  153. • _GetGWorldPixmap is now fully operational.  It merely returns the pixel map handle from the CGrafport, but it is necessary to support the GWorld functionality on classic QuickDraw machines in future releases.
  154. • Fixed a bug in picture font name recording which resulted in a corrupt picture if _GetFName returned an empty string.
  155. • Fixed a cursor problem due to changes in _InitGDevice on the previous release.  This code fixes a bug in the interrupt level manipulation code in several Apple drivers.  In addition, added a secondary function which sets a GDFlag bit to identify 32-bit addressed frame buffers.
  156. • In the Installer, if 32-Bit QuickDraw exists on the target volume in the System Folder, it is updated.
  157. • Stripped 8 K of code from the size of 32-Bit QuickDraw.
  158. • Fixed a bug in dither error propagation that would cause random dots to appear throughout the white background of an image consisting of a few splotches of color.
  159. • Dithering code now supports indexed sources.
  160. • Fixed Launching of Pixel Paint Pro.
  161. • Fixed _PlotCIcon to choose the correct black and white or color icon version for each device it intersects; the main screen no longer controls this.
  162. • Fixed _GetCTable so it is no longer confused by clut 64+2 when the highlight color is black or white.  Clut 1+32 and 1+64 return clut 1.
  163. • When copying from a 16- or 32-bit source image to an indexed device, search procedures are now called in 24-bit addressing mode and register A5 points to the application’s globals/the port.
  164. • If there is not enough memory available for an off-screen copy when copying the screen into a picture with _CopyBits, the picture is not grown, an error is returned, and theGDevice is properly restored.  The optimization to not require an off-screen buffer when only copying from one screen will be restored.
  165. • Fixed many bugs involving the off-screen GWorld support:
  166.     1) NewGWorld preserves thePort.
  167.     2) UpdateGWorld does not trash grafprocs if they are installed.
  168.     3)UpdateGWorld now actually returns the new rowBytes flag (and other flags).
  169.     4)  Fixed alignment bug in UpdateGWorld.
  170.     5) Now when replacing only a color table with UpdateGWorld, it disposes of the old inverse table before replacing the color table.
  171.  
  172.  
  173. Resource Manager
  174.  
  175. • A bad patch to _GetResource caused extra copies of 'actb' and 'dctb' resources to appear in the system heap.  A worse patch caused both to be deleted.  This is now resolved.
  176.  
  177.  
  178. SCSI Manager
  179.  
  180. • The SCSI bus error handler now chains into other bus error handlers.
  181.  
  182.  
  183. Script Manager
  184.  
  185. •• Changed word select definition in 6.x to include letter-number as well as number-letter, which makes word select in TextEdit 3.0 act more like old TextEdit.  Fixed visibleLength when called with a null string.  Fixed divide by zero problem in _FixSpExtra.
  186. • Implemented all the bug fixes already in the Macintosh IIci ROMs in all machines.
  187. • Fixed visible length routine with null string.
  188. • Fixed divide by zero in all justified text routines.
  189. • The high byte of the SmgrGenFlags set properly from the itlc flags byte.
  190. • _String2Date fixed.  The bug was that text in the form of “Month DayofMonth, Year additional text” would not return leftover characters.
  191.  
  192.  
  193. Serial Driver
  194.  
  195. • When the Macintosh Portable was hooked up to an Apple Personal Modem (not the internal modem) it would hang after being put to sleep and awakened about three or four times.  No communication application need be in use at the time, in fact if a communication package was being used, the bug would not appear.  The bug was traced to the hardware, and fixed.
  196. • The Macintosh Portable now watches the modem port during times of interrupt lockout in the same way as the Sony Driver.  Incoming serial data from the modem port is placed on the stack until PmgrOp has an opportunity to send it to the Serial Driver’s PollProc (if any is installed).  This fix allows for full 57.6 Kb serial receiving over the modem port.
  197. • Upon waking up after being asleep for between 5 and 10 minutes, the serial ports on the Macintosh Portable would not function with some peripherals.  This has been fixed and is the same fix that was released as an INIT for 6.0.4.
  198. • The Macintosh IIci now sets the proper DCE pointer before calling _IODone, a condition that caused the driver to hang under certain conditions.
  199. • On the Macintosh IIci, the External and Status interrupt change bits are now being properly reported.
  200. • The Macintosh IIci now recieves and transmits a break correctly.
  201.  
  202.  
  203. Slot Manager
  204.  
  205. • The Slot Manager patch on System 6.0.5 is very similar to the Slot Manager in the Macintosh IIci ROM with bug fixes from 6.0.4.  This patch completely replaces the Slot Manager in ROM on the Macintosh II, IIx, IIcx, and SE/30.  This patch is essentially a merge of the Macintosh IIci version with the 32-Bit QuickDraw 1.0 INIT version.
  206. • The original version of this code moved dCtlDevBase into ScrnBase which is not correct. (it’s missing two critical offsets).  At this point, ScrnBase is the base address of the boot screen’s frame buffer (by the first application launch, it is the main screen’s frame buffer base).  If the machine has 1.0 or 1.1 ROMs (old Slot Manager) then the video card’s SecondaryInit was responsible for updating the base address in the card’s gdPixMap.  So the fix is to always copy the boot screen gDevice’s base address into ScrnBase.  No other gDevice exists yet so it does not need to look for it.  The refnum test prevents problems if the dummy screen is still in effect.
  207.  
  208.  
  209. Sony Driver
  210.  
  211. • The Sony Driver was using the low-memory DiskErr as a completion flag when selecting the disk and seeking.  DiskErr is also used by other drivers, and could cause the format code to screw up.  See the Format Package section.
  212.  
  213.  
  214. Sound Manager
  215.  
  216. •• The Sound Manager is uniform across all systems, as the Macintosh Portable and Macintosh IIci use the disk version.
  217. • Occasionally the VIA would miss the edge trigger to reenable the sound interrupt.  This has been fixed.
  218. • The Sound Manager now allocates private storage in the System heap and resolved problems with heap fragmentation.
  219. • The Sound Manager does not issue the bogus callBackCmd when playing a version 2 ‘snd ’ with _SndPlay.
  220.  
  221. System (miscellaneous)
  222.  
  223. •• Scroll Speed.  On faster machines, such as the Macintosh IIci, it is very hard for users to scroll accurately.  The fix is built into several pieces of the system.  The List Manager, Standard File, and Control Manager are affected.  
  224. • _hwPriv is now available on all machines, and works correctly on accelerated Macintosh Plus machines.
  225. • Macintosh IIci: _StripAddress now works correctly in an interrupt handler.  The VBL task has changed from 60.00 Hz to 60.15 Hz, in order to match exactly the VBL rate on other Macintosh computers.
  226. • Fixed FKEY 3 to do screen dumps properly on frame buffers that are addressed in 32-bit mode.
  227. • Fixed _ATPRequest on the Portable.  Previously, this call had a small window that allowed interrupts which could step on an AppleTalk command which was in the queue.
  228.  
  229.  
  230. TextEdit 3.0 and Script Systems
  231.  
  232. •• All Macintosh computers now use TextEdit 3.0.
  233. • When entering a user name on a right-to-left system on a Portable, the name never displayed in the box.
  234. • Restored the WidthHook to work as before (pre-Macintosh IIci ROM code (6.0.4), which is where this bug first occurred.
  235. • When using two TextEdit records at the same time on a double-byte system, the first byte of a character would be buffered for the first record being used but displayed with the first byte entered in the other record.  The problem was that TextEdit buffered globally for double-byte text.  This is fixed by adding an extra word for buffering at the end of the TEDispatchRec, so that each teRecord now has its own local buffer.  However, TextEdit still uses a global buffer when buffering text with TEFeatureFlag.
  236. • When backspacing or deleting text across a script boundary from non-Roman text into Roman text, the keyboard was not set to Roman.  This is fixed.
  237. • The reorganization of TextEdit’s _FindWord code to always use the new code which uses the Script Manager’s _FindWord routine for non-Roman Script Systems is included.  It seems to fix a number of problems encountered in applications.
  238. • Fixed a scrolling bug on a right-to-left system—the horizontal and vertical values to _TEPinScroll are negative to scroll down.  These values, when halved to display a split caret, caused a large caret to be drawn.  In the case of a negative vertical value (or the bottom edge) to a rectangle, it does not draw split carets.
  239. • Fixed an old boundary condition bug when there was no text in the teRecord, _TEGetPoint was returning an invalid point (for an offset of 0).  The point returned is now based on the values in the record’s destination rectangle.  The line height, taken either from teLineHite for an unstyled teRecord or from the LHElement array for a styled teRecord, is also used to determine the vertical component.  Both the text and system justifications (teJust and teSysJust) are used to determine the horizontal component.
  240. • This version of TextEdit is also available in most 6.0.4 Script Systems.
  241. • The new routine TEFeatureFlag is now fully supported.
  242. • A significant number of bug fixes have been made beyond the version released in the Macintosh IIci ROM.  In particular, a bug introduced in _TEInit in 6.0.4 has been fixed: TEDoText is now set correctly.
  243.  
  244.  
  245. Time Manager
  246.  
  247. • System 6.0.5 implements the functionality of the Time Manager found in the Macintosh IIci ROMs on all Macintosh CPUs.  The interface to the Time Manager has not changed since system 6.0.3.
  248.  
  249.  
  250. TFB Video Driver (Apple 4/8-bit Macintosh II Video Card)
  251.  
  252. • Gray Page control call fixed to not require screen mode to be passed in parameter block, consistently with documentation.
  253. • Interrupt-level changing code improved to raise interrupt level to level-2 rather than level-7.  This should reduce interrupt overhead when changing screen depth or color table.
  254. • Fixed a bug in GetEntries status call.  Now it correctly handles any indexed mode request.
  255. • Driver version updated to version 4.
  256.  
  257.